home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / sysdeps / unix / mips / __brk.S next >
Text File  |  1993-08-26  |  1KB  |  66 lines

  1. /* Copyright (C) 1992 Free Software Foundation, Inc.
  2.    Contributed by Brendan Kehoe (brendan@zen.org).
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. #include <sysdep.h>
  20.  
  21. #ifndef SYS_brk
  22. #define SYS_brk 17
  23. #endif
  24.  
  25. #ifndef       HAVE_GNU_LD
  26. #define __end           end
  27. #endif
  28.  
  29. .data
  30. .sdata
  31. ENTRY(__curbrk)
  32.     .word __end
  33.  
  34. .text
  35. .set noreorder
  36. .set noat
  37.  
  38. ENTRY(__brk)
  39.     /* Minimum is one page.  */
  40.     lui v0, 4096
  41.     lw v0, __end
  42.     nop
  43.  
  44.     /* If they ask for less than a page, givvem the whole
  45.        thing anyway.  */
  46.     sltu AT, a0, v0
  47.     beq AT, zero, down1
  48.     nop
  49.     move a0, v0
  50. down1:
  51.     li v0, SYS_brk
  52.     syscall
  53.     bne a3, zero, error
  54.  
  55.     /* Update __curbrk and exit cleanly.  */
  56.     lui AT, 4096
  57.     sw a0, __curbrk
  58.     j ra
  59.     move v0, zero
  60.  
  61.     /* What a horrible way to die.  */
  62. error:    j syscall_error
  63.     nop
  64.     nop
  65.     nop
  66.